package edu.neu.swc.skynet.service;

import edu.neu.swc.skynet.vo.UsernameAndPassword;

/**
 * <h1>JWT 相关接口定义</h1>
 * 提供 JWT 授权服务
 * 分派 JWT Token 令牌
 */
public interface IJwtService {

    /**
     * <h2>生成jwt token，使用默认的超时时间</h2>
     * @param username 传递的用户名
     * @param password 传递的密码
     * @return JWT token 对象
     * @throws Exception {}
     */
    String generateToken(String username, String password) throws Exception;

    /**
     * <h2>指定超时时间的Token，单位是天</h2>
     * @param username 传递的用户名
     * @param password 传递的密码
     * @param expire 传递的超时时间
     * @return JWT token 对象
     * @throws Exception {}
     */
    String generateToken(String username,String password,int expire) throws Exception;

    /**
     * <h2>注册用户并生成token返回</h2>
     * @param usernameAndPassword 用户名和密码对象
     * @return JWT token 对象
     * @throws Exception {}
     */
    String registerUserAndGenerateToken(UsernameAndPassword usernameAndPassword)
            throws Exception;
}
